Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


sbapp/kivymd/tools/patterns/create_project.py b4f0ff722e954d1edc2d4d433f4bd95d362bcc3a (b4f0ff72) Text, 33.93 KB

T8b949e"""
Script creates a project with the MVC pattern
=============================================

.. versionadded:: 1.0.0

.. seealso::

`MVC pattern <https://en.wikipedia.org/wiki/Model–view–controller>`_

.. rubric:: Use a clean architecture for your applications.

.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/preview-mvc.png
:align: center

Use a clean architecture for your applications. KivyMD allows you to quickly
create a project template with the MVC pattern. So far, this is the only
pattern that this utility offers. You can also include database support in
your project. At the moment, support for the Firebase database
(the basic implementation of the real time database) and RestDB
(the full implementation) is available.

Project creation
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Template command::

python -m kivymd.tools.patterns.create_project \\
name_pattern \\
path_to_project \\
name_project \\
python_version \\
kivy_version

Example command::

python -m kivymd.tools.patterns.create_project \\
MVC \\
/Users/macbookair/Projects \\
MyMVCProject \\
python3.10 \\
2.1.0

This command will by default create a project with an MVC pattern.
Also, the project will create a virtual environment with Python 3.10,
Kivy version 2.1.0 and KivyMD master version.

.. note::
Please note that the Python version you specified must be installed on your
computer.

.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/mvc-base.png
:align: center

Creating a project using a database
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

.. note::
Note that in the following command, you can use one of two database names:
'firebase' or 'restdb'.

Template command::

python -m kivymd.tools.patterns.create_project \\
name_pattern \\
path_to_project \\
name_project \\
python_version \\
kivy_version \\
--name_database

Example command::

python -m kivymd.tools.patterns.create_project \\
MVC \\
/Users/macbookair/Projects \\
MyMVCProject \\
python3.10 \\
2.1.0 \\
--name_database restdb

This command will create a project with an MVC template by default.
The project will also create a virtual environment with Python 3.10,
Kivy version 2.1.0, KivyMD master version and a wrapper for working with
the database restdb.io.

.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/mvc-database.png
:align: center

.. code-block:: python

class DataBase:
def __init__(self):
database_url = "https://restdbio-5498.restdb.io"
api_key = "7ce258d66f919d3a891d1166558765f0b4dbd"

.. note::
Please note that `database.py` the shell in the `DataBase` class uses the
`database_url` and `api_key` parameters on the test database (works only in read mode),
so you should use your data for the database.

Preview of the basic MVC template using the RestDB database
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/mvc-restbd-preview.png
:align: center

Create project with hot reload
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Template command::

python -m kivymd.tools.patterns.create_project \\
name_pattern \\
path_to_project \\
name_project \\
python_version \\
kivy_version \\
--use_hotreload

Example command::

python -m kivymd.tools.patterns.create_project \\
MVC \\
/Users/macbookair/Projects \\
MyMVCProject \\
python3.10 \\
2.1.0 \\
--use_hotreload yes

After creating the project, open the file `main.py`, there is a lot of useful
information. Also, the necessary information is in other modules of the project
in the form of comments. So do not forget to look at the source files of the
created project.

Others command line arguments
======================

Required Arguments
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern pattern
- the name of the pattern with which the project will be created

directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory directory
- directory in which the project will be created

name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name name
- project name

python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version python_version
- the version of Python (specify as `python3.9` or `python3.8`) with
- which the virtual environment will be created

kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version kivy_version
- version of Kivy (specify as `2.1.0` or `master`) that will be used in the project

Optional arguments
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen name_screen
- the name of the class which be used when creating the project pattern

name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database name_database
- provides a basic template for working with the 'firebase' library
- or a complete implementation for working with a database 'restdb.io'

use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload use_hotreload
- creates a hot reload entry point to the application

use_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localizationuse_localization
- creates application localization files

.. warning:: On Windows, hot reloading of Python files may not work.
But, for example, there is no such problem in macOS. If you fix this,
please report it to the KivyMD community.
"""

Tff7b72import T7ee787os
Tff7b72import T7ee787re
Tff7b72import T7ee787shutil
Tff7b72from T7ee787typing Tff7b72import Te6edf3Union

Tff7b72from T7ee787kivy Tff7b72import Te6edf3LoggerTb4b4b4, Te6edf3platform

Tff7b72from T7ee787kivymd Tff7b72import Te6edf3path Tff7b72as Te6edf3kivymd_path
Tff7b72from T7ee787kivymdT7ee787.T7ee787toolsT7ee787.T7ee787argument_parser Tff7b72import Te6edf3ArgumentParserWithHelp

Te6edf3_database_model Tff7b72= Ta5d6ff'''Ta5d6ffimport multitasking

Ta5d6fffrom Model.base_model import BaseScreenModel

Ta5d6ffmultitasking.set_max_threads(10)


Ta5d6ffclass Tffd700{name_screen}Ta5d6ffModel(BaseScreenModel):
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"
Ta5d6ff Implements the logic of the
Ta5d6ff :class:`~View.Tffd700{name_screen}Ta5d6ff.Tffd700{module_name}Ta5d6ff.Tffd700{name_screen}Ta5d6ffView` class.
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"

Ta5d6ff def __init__(self, database):
Ta5d6ff self.database = database
Ta5d6ff # Dict:
Ta5d6ff # Ta5d6ff'Ta5d6ffloginTa5d6ff'Ta5d6ff: Ta5d6ff'Ta5d6ffKivyMDTa5d6ff'
Ta5d6ff # Ta5d6ff'Ta5d6ffpasswordTa5d6ff'Ta5d6ff: Ta5d6ff'Ta5d6ff1111Ta5d6ff'
Ta5d6ff self.user_data = dict()
Ta5d6ff self._data_validation_status = None

Ta5d6ff @property
Ta5d6ff def data_validation_status(self):
Ta5d6ff return self._data_validation_status

Ta5d6ff @data_validation_status.setter
Ta5d6ff def data_validation_status(self, value):
Ta5d6ff self._data_validation_status = value
Ta5d6ff # We notify the View -
Ta5d6ff # :class:`~View.Tffd700{name_screen}Ta5d6ff.Tffd700{module_name}Ta5d6ff.Tffd700{name_screen}Ta5d6ffView` about the
Ta5d6ff # changes that have occurred in the data model.
Ta5d6ff self.notify_observers(Tffd700{notify_name_screen}Ta5d6ff)

Ta5d6ff @multitasking.task
Ta5d6ff def check_data(self):
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"
Ta5d6ff Get data from the database and compares this data with the data entered
Ta5d6ff by the user. This method is completely asynchronous.
Ta5d6ff It does not return any value.
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"

Ta5d6ff data = self.database.get_data_from_collection(self.database.USER_DATA)
Ta5d6ff data_validation_status = False

Ta5d6ff if data:
Ta5d6ff if self.database.name == Ta5d6ff"Ta5d6ffRestDBTa5d6ff"Ta5d6ff:
Ta5d6ff data = data[0]
Ta5d6ff else:
Ta5d6ff data = list(data.values())[0]
Ta5d6ff if (
Ta5d6ff data[Ta5d6ff"Ta5d6ffloginTa5d6ff"Ta5d6ff] == self.user_data[Ta5d6ff"Ta5d6ffloginTa5d6ff"Ta5d6ff]
Ta5d6ff and data[Ta5d6ff"Ta5d6ffpasswordTa5d6ff"Ta5d6ff] == self.user_data[Ta5d6ff"Ta5d6ffpasswordTa5d6ff"Ta5d6ff]
Ta5d6ff ):
Ta5d6ff data_validation_status = True
Ta5d6ff self.data_validation_status = data_validation_status

Ta5d6ff def set_user_data(self, key: str, value: str) -> None:
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"Ta5d6ffSets a dictionary of data that the user enters.Ta5d6ff"Ta5d6ff"Ta5d6ff"

Ta5d6ff self.user_data[key] = value

Ta5d6ff def reset_data_validation_status(self) -> None:
Ta5d6ff self.data_validation_status = None
Ta5d6ff'''

Te6edf3_without_database_model Tff7b72= Ta5d6ff'''Ta5d6fffrom Model.base_model import BaseScreenModel


Ta5d6ffclass Tffd700{name_screen}Ta5d6ffModel(BaseScreenModel):
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"
Ta5d6ff Implements the logic of the
Ta5d6ff :class:`~View.Tffd700{module_name}Ta5d6ff.Tffd700{name_screen}Ta5d6ff.Tffd700{name_screen}Ta5d6ffView` class.
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"Ta5d6ff'''

Te6edf3_database_controller Tff7b72= Ta5d6ff'''
Tffd700{import_module}


Ta5d6ffclass Tffd700{name_screen}Ta5d6ffController:
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"
Ta5d6ff The `Tffd700{name_screen}Ta5d6ffController` class represents a controller implementation.
Ta5d6ff Coordinates work of the view with the model.
Ta5d6ff The controller implements the strategy pattern. The controller connects to
Ta5d6ff the view to control its actions.
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"

Ta5d6ff def __init__(self, model):
Ta5d6ff self.model = model # Model.Tffd700{module_name}Ta5d6ff.Tffd700{name_screen}Ta5d6ffModel object
Ta5d6ff self.view = Tffd700{name_view}Ta5d6ff(
Ta5d6ff controller=self, model=self.model
Ta5d6ff )

Ta5d6ff def set_user_data(self, key: str, value: str) -> None:
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"Ta5d6ffCalled every time the user enters text into the text fields.Ta5d6ff"Ta5d6ff"Ta5d6ff"

Ta5d6ff self.model.set_user_data(key, value)

Ta5d6ff def on_tap_button_login(self) -> None:
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"Ta5d6ffCalled when the `LOGIN` button is pressed.Ta5d6ff"Ta5d6ff"Ta5d6ff"

Ta5d6ff self.view.show_dialog_wait()
Ta5d6ff self.model.check_data()

Ta5d6ff def reset_data_validation_status(self, *args) -> None:
Ta5d6ff self.model.reset_data_validation_status()
Ta5d6ff'''

Te6edf3_without_database_controller Tff7b72= Ta5d6ff'''
Tffd700{import_module}


Ta5d6ffclass Tffd700{name_screen}Ta5d6ffController:
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"
Ta5d6ff The `Tffd700{name_screen}Ta5d6ffController` class represents a controller implementation.
Ta5d6ff Coordinates work of the view with the model.
Ta5d6ff The controller implements the strategy pattern. The controller connects to
Ta5d6ff the view to control its actions.
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"

Ta5d6ff def __init__(self, model):
Ta5d6ff self.model = model # Model.Tffd700{module_name}Ta5d6ff.Tffd700{name_screen}Ta5d6ffModel
Ta5d6ff self.view = Tffd700{name_view}Ta5d6ff(controller=self, model=self.model)

Ta5d6ff def on_tap_button_login(self) -> None:
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"Ta5d6ffCalled when the `LOGIN` button is pressed.Ta5d6ff"Ta5d6ff"Ta5d6ff"

Ta5d6ff def set_user_data(self, key, value) -> None:
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"Ta5d6ffCalled every time the user enters text into the text fields.Ta5d6ff"Ta5d6ff"Ta5d6ff"
Ta5d6ff'''

Te6edf3_database_view_import Tff7b72= Ta5d6ff"""Ta5d6fffrom typing import Union

Ta5d6fffrom kivy.clock import Clock

Ta5d6fffrom kivymd.uix.dialog import MDDialog
Ta5d6fffrom kivymd.uix.snackbar import Snackbar
Ta5d6ff"""

Te6edf3_without_database_view_import Tff7b72= Ta5d6ff"""
Ta5d6ff"""

Te6edf3_database_view_methods Tff7b72= Ta5d6ff'''Ta5d6ff def __init__(self, **kwargs):
Ta5d6ff super().__init__(**kwargs)
Ta5d6ff self.dialog = MDDialog()
Ta5d6ff self.dialog.bind(on_dismiss=self.controller.reset_data_validation_status)

Ta5d6ff def show_dialog_wait(self) -> None:
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"Ta5d6ffDisplays a wait dialog while the model is processing data.Ta5d6ff"Ta5d6ff"Ta5d6ff"

Ta5d6ff self.dialog.auto_dismiss = False
Ta5d6ff self.dialog.text = Ta5d6ff"Ta5d6ffData validation...Ta5d6ff"
Ta5d6ff self.dialog.open()

Ta5d6ff def show_toast(self, interval: Union[int, float]) -> None:
Ta5d6ff Snackbar(
Ta5d6ff text=Ta5d6ff"Ta5d6ffYou have passed the verification successfully!Ta5d6ff"Ta5d6ff,
Ta5d6ff snackbar_x=Ta5d6ff"Ta5d6ff10dpTa5d6ff"Ta5d6ff,
Ta5d6ff snackbar_y=Ta5d6ff"Ta5d6ff10dpTa5d6ff"Ta5d6ff,
Ta5d6ff size_hint_x=.8,
Ta5d6ff bg_color=self.theme_cls.primary_color,
Ta5d6ff ).open()
Ta5d6ff'''

Te6edf3_database_view_model_is_changed_method Tff7b72= Ta5d6ff"""Ta5d6ffif self.model.data_validation_status:
Ta5d6ff self.dialog.dismiss()
Ta5d6ff Clock.schedule_once(self.show_toast, 1)
Ta5d6ff if self.model.data_validation_status is False:
Ta5d6ff self.dialog.text = Ta5d6ff"Ta5d6ffWrong data!Ta5d6ff"
Ta5d6ff self.dialog.auto_dismiss = True
Ta5d6ff"""

Te6edf3_firebase_requirements Tff7b72= Ta5d6ff"""Ta5d6ffkivy==2.1.0
Ta5d6ffkivymd==1.0.0
Ta5d6ffmultitasking
Ta5d6fffirebase
Ta5d6fffirebase-admin
Ta5d6ffpython_jwt
Ta5d6ffgcloud
Ta5d6ffsseclient
Ta5d6ffpycryptodome==3.4.3
Ta5d6ffrequests_toolbelt
Ta5d6ff"""

Te6edf3_without_firebase_requirements Tff7b72= Ta5d6ff"""Ta5d6ffkivy==2.1.0
Ta5d6ffkivymd==1.0.0
Ta5d6ff"""

Te6edf3_hot_reload_main Tff7b72= Ta5d6ff'''
Ta5d6ff"Ta5d6ff"Ta5d6ff"
Ta5d6ffScript for managing hot reloading of the project.
Ta5d6ffFor more details see the documentation page -

Ta5d6ffhttps://kivymd.readthedocs.io/en/latest/api/kivymd/tools/patterns/create_project/

Ta5d6ffTo run the application in hot boot mode, execute the command in the console:
Ta5d6ffDEBUG=1 python main.py
Ta5d6ff"Ta5d6ff"Ta5d6ff"

Ta5d6ffimport importlib
Ta5d6ffimport os

Ta5d6fffrom kivy import Config
Ta5d6fffrom kivy.uix.screenmanager import ScreenManager

Ta5d6fffrom PIL import ImageGrab

Ta5d6ff# TODO: You may know an easier way to get the size of a computer display.
Ta5d6ffresolution = ImageGrab.grab().size

Ta5d6ff# Change the values of the application window size as you need.
Ta5d6ffConfig.set(Ta5d6ff"Ta5d6ffgraphicsTa5d6ff"Ta5d6ff, Ta5d6ff"Ta5d6ffheightTa5d6ff"Ta5d6ff, resolution[1])
Ta5d6ffConfig.set(Ta5d6ff"Ta5d6ffgraphicsTa5d6ff"Ta5d6ff, Ta5d6ff"Ta5d6ffwidthTa5d6ff"Ta5d6ff, Ta5d6ff"Ta5d6ff400Ta5d6ff"Ta5d6ff)

Ta5d6fffrom kivy.core.window import WindowTffd700%s

Ta5d6ff# Place the application window on the right side of the computer screen.
Ta5d6ffWindow.top = 0
Ta5d6ffWindow.left = resolution[0] - Window.width

Ta5d6fffrom kivymd.tools.hotreload.app import MDApp
Tffd700%sTffd700%s

Ta5d6ffclass Tffd700%sTa5d6ff(MDApp):
Ta5d6ff KV_FILES = Ta5d6ff{
Ta5d6ff os.path.join(
Ta5d6ff os.getcwd(),
Ta5d6ff Ta5d6ff"Ta5d6ffViewTa5d6ff"Ta5d6ff,
Ta5d6ff Ta5d6ff"Tffd700%sTa5d6ff"Ta5d6ff,
Ta5d6ff Ta5d6ff"Tffd700%sTa5d6ff.kvTa5d6ff"Ta5d6ff,
Ta5d6ff ),
Ta5d6ff }Tffd700%s

Ta5d6ff def build_app(self) -> ScreenManager:
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"
Ta5d6ff In this method, you donTa5d6ff'Ta5d6fft need to change anything other than the
Ta5d6ff application theme.
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"

Ta5d6ff import View.screens

Ta5d6ff self.theme_cls.primary_palette = Ta5d6ff"Ta5d6ffOrangeTa5d6ff"
Ta5d6ff self.manager_screens = ScreenManager()Tffd700%sTffd700%s
Ta5d6ff Window.bind(on_key_down=self.on_keyboard_down)
Ta5d6ff importlib.reload(View.screens)
Ta5d6ff screens = View.screens.screens

Ta5d6ff for i, name_screen in enumerate(screens.keys()):
Ta5d6ff model = screens[name_screen][Ta5d6ff"Ta5d6ffmodelTa5d6ff"Ta5d6ff](Tffd700%sTa5d6ff)
Ta5d6ff controller = screens[name_screen][Ta5d6ff"Ta5d6ffcontrollerTa5d6ff"Ta5d6ff](model)
Ta5d6ff view = controller.get_view()
Ta5d6ff view.manager_screens = self.manager_screens
Ta5d6ff view.name = name_screen
Ta5d6ff self.manager_screens.add_widget(view)

Ta5d6ff return self.manager_screens

Ta5d6ff def on_keyboard_down(self, window, keyboard, keycode, text, modifiers) -> None:
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"
Ta5d6ff The method handles keyboard events.

Ta5d6ff By default, a forced restart of an application is tied to the
Ta5d6ff `CTRL+R` key on Windows OS and `COMMAND+R` on Mac OS.
Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"

Ta5d6ff if Ta5d6ff"Ta5d6ffmetaTa5d6ff"Ta5d6ff in modifiers or Ta5d6ff"Ta5d6ffctrlTa5d6ff"Ta5d6ff in modifiers and text == Ta5d6ff"Ta5d6ffrTa5d6ff"Ta5d6ff:
Ta5d6ff self.rebuild()Tffd700%sTffd700%s


Tffd700%sTa5d6ff().run()

Ta5d6ff# After you finish the project, remove the above code and uncomment the below
Ta5d6ff# code to test the application normally without hot reloading.
Ta5d6ff'''

Te6edf3available_patterns Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6ffMVCTa5d6ff"Tb4b4b4]
Te6edf3available_databases Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6fffirebaseTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffrestdbTa5d6ff"Tb4b4b4]


Tff7b72def Td2a8ffmainTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3parser Tff7b72= Te6edf3create_argument_parserTb4b4b4(Tb4b4b4)
Te6edf3args Tff7b72= Te6edf3parserTff7b72.Td2a8ffparse_argsTb4b4b4(Tb4b4b4)

Te6edf3pattern_name Tff7b72= Te6edf3argsTff7b72.Td2a8ffpattern
Te6edf3project_directory Tff7b72= Te6edf3argsTff7b72.Td2a8ffdirectory
Te6edf3project_name Tff7b72= Ta5d6ff"Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3argsTff7b72.Td2a8ffnameTff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Ta5d6ff Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3kivy_version Tff7b72= Te6edf3argsTff7b72.Td2a8ffkivy_version
Te6edf3python_version Tff7b72= Te6edf3argsTff7b72.Td2a8ffpython_version
Tff7b72if Ta5d6ff"Ta5d6ff3Ta5d6ff" Tff7b72not Tff7b72in Te6edf3python_versionTb4b4b4:
Te6edf3parserTff7b72.Td2a8fferrorTb4b4b4(Ta5d6ff"Ta5d6ffPython must be at least version 3Ta5d6ff"Tb4b4b4)
Te6edf3name_screen Tff7b72= Ta5d6ff"Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3argsTff7b72.Td2a8ffname_screenTff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Ta5d6ff Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3path_to_project Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3project_directoryTb4b4b4, Te6edf3project_nameTb4b4b4)
Te6edf3name_database Tff7b72= Te6edf3argsTff7b72.Td2a8ffname_database
Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff" Tff7b72and Te6edf3name_database Tff7b72not Tff7b72in Te6edf3available_databasesTb4b4b4:
Te6edf3parserTff7b72.Td2a8fferrorTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffThe database name must be one of the Tffd700{Te6edf3available_databasesTffd700}Ta5d6ff listTa5d6ff"
Tb4b4b4)
Te6edf3use_hotreload Tff7b72= Te6edf3argsTff7b72.Td2a8ffuse_hotreload
Te6edf3use_localization Tff7b72= Te6edf3argsTff7b72.Td2a8ffuse_localization

T8b949e# Check arguments.
Tff7b72if Te6edf3name_screenTb4b4b4[Tff7b72-T79c0ff6Tb4b4b4:Tb4b4b4] Tff7b72!= Ta5d6ff"Ta5d6ffScreenTa5d6ff"Tb4b4b4:
Te6edf3parserTff7b72.Td2a8fferrorTb4b4b4(
Ta5d6ff"Ta5d6ffName of the screen must contain the word Ta5d6ff'Ta5d6ffScreenTa5d6ff'Ta5d6ff at the end. Ta5d6ff"
Ta5d6ff"Tffea00\nTa5d6ffFor example - Ta5d6ff'Ta5d6ff... --name_screen MyFirstScreenTa5d6ff'Ta5d6ff"
Tb4b4b4)
Te6edf3module_name Tff7b72= Te6edf3chek_camel_case_name_projectTb4b4b4(Te6edf3name_screenTb4b4b4)
Tff7b72if Tff7b72not Te6edf3module_nameTb4b4b4:
Te6edf3parserTff7b72.Td2a8fferrorTb4b4b4(
Ta5d6ff"Ta5d6ffThe name of the screen should be written in camel case style. Ta5d6ff"
Ta5d6ff"Tffea00\nTa5d6ffFor example - Ta5d6ff'Ta5d6ffMyFirstScreenTa5d6ff'Ta5d6ff"
Tb4b4b4)
Te6edf3module_name Tff7b72= Ta5d6ff"Ta5d6ff_Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Tb4b4b4[Te6edf3nameTff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4) Tff7b72for Te6edf3name Tff7b72in Te6edf3module_nameTb4b4b4]Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffexistsTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3kivymd_pathTb4b4b4, Ta5d6ff"Ta5d6fftoolsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffpatternsTa5d6ff"Tb4b4b4, Te6edf3pattern_nameTb4b4b4)
Tb4b4b4)Tb4b4b4:
Te6edf3parserTff7b72.Td2a8fferrorTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffThere is no Tffd700{Te6edf3pattern_nameTffd700}Ta5d6ff pattern.Tffea00\nTa5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffOnly Tffd700{Te6edf3available_patternsTffd700}Ta5d6ff template is available.Ta5d6ff"
Tb4b4b4)

T8b949e# Call the functions of creating a project.
Tff7b72if Tff7b72not Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffexistsTb4b4b4(Te6edf3path_to_projectTb4b4b4)Tb4b4b4:
Te6edf3shutilTff7b72.Td2a8ffcopytreeTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3kivymd_pathTb4b4b4, Ta5d6ff"Ta5d6fftoolsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffpatternsTa5d6ff"Tb4b4b4, Te6edf3pattern_nameTb4b4b4)Tb4b4b4,
Te6edf3path_to_projectTb4b4b4,
Tb4b4b4)
Te6edf3create_mainTb4b4b4(
Te6edf3name_databaseTb4b4b4, Te6edf3use_localizationTb4b4b4, Te6edf3path_to_projectTb4b4b4, Te6edf3project_name
Tb4b4b4)
Te6edf3create_modelTb4b4b4(Te6edf3name_databaseTb4b4b4, Te6edf3name_screenTb4b4b4, Te6edf3module_nameTb4b4b4, Te6edf3path_to_projectTb4b4b4)
Te6edf3create_controllerTb4b4b4(
Te6edf3name_databaseTb4b4b4,
Te6edf3use_hotreloadTb4b4b4,
Te6edf3name_screenTb4b4b4,
Te6edf3module_nameTb4b4b4,
Te6edf3path_to_projectTb4b4b4,
Tb4b4b4)
Te6edf3create_viewTb4b4b4(
Te6edf3name_databaseTb4b4b4,
Te6edf3use_localizationTb4b4b4,
Te6edf3name_screenTb4b4b4,
Te6edf3module_nameTb4b4b4,
Te6edf3path_to_projectTb4b4b4,
Tb4b4b4)
Te6edf3create_requirementsTb4b4b4(Te6edf3name_databaseTb4b4b4, Te6edf3path_to_projectTb4b4b4)
Te6edf3osTff7b72.Td2a8ffmakedirsTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffassetsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffimagesTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffmkdirTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffassetsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffontsTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3rename_ext_py_tmp_to_pyTb4b4b4(Te6edf3path_to_projectTb4b4b4)
Te6edf3move_initTb4b4b4(Te6edf3path_to_projectTb4b4b4, Te6edf3name_screenTb4b4b4)

Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff"Tb4b4b4:
Te6edf3check_databasesTb4b4b4(Te6edf3name_databaseTb4b4b4, Te6edf3path_to_projectTb4b4b4)

Tff7b72if Te6edf3use_hotreload Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"Tb4b4b4:
Te6edf3create_main_with_hotreloadTb4b4b4(
Te6edf3path_to_projectTb4b4b4,
Te6edf3project_nameTb4b4b4,
Te6edf3name_screenTb4b4b4,
Te6edf3module_nameTb4b4b4,
Te6edf3name_databaseTb4b4b4,
Te6edf3use_localizationTb4b4b4,
Tb4b4b4)
Tff7b72with Tffa657openTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffrequirements.txtTa5d6ff"Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffaTa5d6ff"Tb4b4b4,
Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4,
Tb4b4b4) Tff7b72as Te6edf3requirementsTb4b4b4:
Te6edf3requirementsTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ff"Ta5d6ffwatchdogTa5d6ff"Tb4b4b4)

Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"Tb4b4b4:
Te6edf3LoggerTff7b72.Td2a8ffinfoTb4b4b4(Ta5d6ff"Ta5d6ffKivyMD: Create localization files...Ta5d6ff"Tb4b4b4)
Te6edf3create_makefileTb4b4b4(
Te6edf3path_to_projectTb4b4b4, Te6edf3project_nameTb4b4b4, Te6edf3module_nameTb4b4b4, Te6edf3name_screen
Tb4b4b4)
Te6edf3localization_po_fileTb4b4b4(Te6edf3path_to_projectTb4b4b4)
Te6edf3create_mofileTb4b4b4(Te6edf3path_to_projectTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3osTff7b72.Td2a8ffremoveTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffmessages.potTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffremoveTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6fflibsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftranslation.pyTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3shutilTff7b72.Td2a8ffrmtreeTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffdataTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3LoggerTff7b72.Td2a8ffinfoTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffKivyMD: Project Ta5d6ff'Tffd700{Te6edf3path_to_projectTffd700}Ta5d6ff'Ta5d6ff createdTa5d6ff"Tb4b4b4)
Te6edf3LoggerTff7b72.Td2a8ffinfoTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffKivyMD: Create a virtual environment for Ta5d6ff'Tffd700{Te6edf3path_to_projectTffd700}Ta5d6ff'Ta5d6ff project...Ta5d6ff"
Tb4b4b4)
Te6edf3create_virtual_environmentTb4b4b4(Te6edf3python_versionTb4b4b4, Te6edf3path_to_projectTb4b4b4)
Te6edf3LoggerTff7b72.Td2a8ffinfoTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffKivyMD: Install requirements for Ta5d6ff'Tffd700{Te6edf3path_to_projectTffd700}Ta5d6ff'Ta5d6ff project...Ta5d6ff"
Tb4b4b4)
Te6edf3install_requirementsTb4b4b4(Te6edf3path_to_projectTb4b4b4, Te6edf3kivy_versionTb4b4b4, Te6edf3name_databaseTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3parserTff7b72.Td2a8fferrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffThe Tffd700{Te6edf3path_to_projectTffd700}Ta5d6ff project already existsTa5d6ff"Tb4b4b4)


Tff7b72def Td2a8ffcreate_main_with_hotreloadTb4b4b4(
Te6edf3path_to_projectTb4b4b4: Tffa657strTb4b4b4,
Te6edf3project_nameTb4b4b4: Tffa657strTb4b4b4,
Te6edf3name_screenTb4b4b4: Tffa657strTb4b4b4,
Te6edf3module_nameTb4b4b4: Tffa657strTb4b4b4,
Te6edf3name_databaseTb4b4b4: Tffa657strTb4b4b4,
Te6edf3use_localizationTb4b4b4: Tffa657strTb4b4b4,
Tb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Tff7b72with Tffa657openTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffmain.pyTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"
Tb4b4b4) Tff7b72as Te6edf3main_fileTb4b4b4:
Te6edf3main_code Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72for Te6edf3string Tff7b72in Te6edf3main_fileTff7b72.Td2a8ffreadlinesTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3main_code Tff7b72+Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff# Tffd700{Te6edf3stringTffd700}Ta5d6ff"
Tff7b72with Tffa657openTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffmain.pyTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"
Tb4b4b4) Tff7b72as Te6edf3main_fileTb4b4b4:
Te6edf3main_fileTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3_hot_reload_mainTffd700}Tffea00\nTffd700{Te6edf3main_codeTffd700}Ta5d6ff"Tb4b4b4)

Te6edf3replace_in_fileTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffmain.pyTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4(
Ta5d6ff"Tffea00\nTa5d6fffrom kivy.properties import StringPropertyTa5d6ff"
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Tffea00\nTa5d6fffrom Model.database import DataBaseTa5d6ff"
Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Tffea00\nTa5d6fffrom libs.translation import TranslationTffea00\nTa5d6ff"
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3project_nameTb4b4b4,
Te6edf3name_screenTb4b4b4,
Te6edf3module_nameTb4b4b4,
Ta5d6ff'Tffea00\nTa5d6ff lang = StringProperty(Ta5d6ff"Ta5d6ffenTa5d6ff"Ta5d6ff)Tffea00\nTa5d6ff'
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Tffea00\nTa5d6ff self.base = DataBase()Tffea00\nTa5d6ff"
Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Tffea00\nTa5d6ff self.translation = Translation(Tffea00\nTa5d6ff"
Ta5d6ff'Ta5d6ff self.lang, Ta5d6ff"Tffd700%sTa5d6ff"Ta5d6ff, fTa5d6ff"Tffd700{self.directory}Ta5d6ff/data/localesTa5d6ff"Ta5d6ff'
Ta5d6ff"Tffea00\nTa5d6ff )Ta5d6ff" Tff7b72% Te6edf3project_name
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffself.databaseTa5d6ff" Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff" Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Tffea00\nTffea00\nTa5d6ff def on_lang(self, instance_app, lang_value: str) -> None:Tffea00\nTa5d6ff"
Ta5d6ff"Ta5d6ff self.translation.switch_lang(lang_value)Tffea00\nTa5d6ff"
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Tffea00\nTa5d6ff def switch_lang(self) -> None:Tffea00\nTa5d6ff"
Ta5d6ff'Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"Ta5d6ffSwitch lang.Ta5d6ff"Ta5d6ff"Ta5d6ff"Tffea00\nTffea00\nTa5d6ff'
Ta5d6ff'Ta5d6ff self.lang = Ta5d6ff"Ta5d6ffruTa5d6ff"Ta5d6ff if self.lang == Ta5d6ff"Ta5d6ffenTa5d6ff"Ta5d6ff else Ta5d6ff"Ta5d6ffenTa5d6ff"Ta5d6ff'
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3project_nameTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)


Tff7b72def Td2a8ffcreate_mainTb4b4b4(
Te6edf3name_databaseTb4b4b4: Tffa657strTb4b4b4,
Te6edf3use_localizationTb4b4b4: Tffa657strTb4b4b4,
Te6edf3path_to_projectTb4b4b4: Tffa657strTb4b4b4,
Te6edf3project_nameTb4b4b4: Tffa657strTb4b4b4,
Tb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3replace_in_fileTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffmain.py_tmpTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4(
Ta5d6ff"Tffea00\nTa5d6fffrom kivy.properties import StringPropertyTa5d6ff"
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Tffea00\nTa5d6fffrom libs.translation import TranslationTa5d6ff"
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffrom Model.database import DataBaseTffea00\nTa5d6ff"
Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3project_nameTb4b4b4,
Ta5d6ff'Tffea00\nTa5d6ff lang = StringProperty(Ta5d6ff"Ta5d6ffenTa5d6ff"Ta5d6ff)Tffea00\nTa5d6ff'
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Tffea00\nTa5d6ff self.translation = Translation(Tffea00\nTa5d6ff"
Ta5d6ff'Ta5d6ff self.lang, Ta5d6ff"Tffd700%sTa5d6ff"Ta5d6ff, fTa5d6ff"Tffd700{self.directory}Ta5d6ff/data/localesTa5d6ff"Ta5d6ff'
Ta5d6ff"Tffea00\nTa5d6ff )Ta5d6ff" Tff7b72% Te6edf3project_name
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffself.database = DataBase()Tffea00\nTa5d6ff" Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff" Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffself.databaseTa5d6ff" Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff" Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Tffea00\nTa5d6ff def on_lang(self, instance_app, lang_value: str) -> None:Tffea00\nTa5d6ff"
Ta5d6ff"Ta5d6ff self.translation.switch_lang(lang_value)Tffea00\nTa5d6ff"
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Tffea00\nTa5d6ff def switch_lang(self) -> None:Tffea00\nTa5d6ff"
Ta5d6ff'Ta5d6ff Ta5d6ff"Ta5d6ff"Ta5d6ff"Ta5d6ffSwitch lang.Ta5d6ff"Ta5d6ff"Ta5d6ff"Tffea00\nTffea00\nTa5d6ff'
Ta5d6ff'Ta5d6ff self.lang = Ta5d6ff"Ta5d6ffruTa5d6ff"Ta5d6ff if self.lang == Ta5d6ff"Ta5d6ffenTa5d6ff"Ta5d6ff else Ta5d6ff"Ta5d6ffenTa5d6ff"Tffea00\nTa5d6ff'
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3project_nameTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)


Tff7b72def Td2a8ffcreate_modelTb4b4b4(
Te6edf3name_databaseTb4b4b4: Tffa657strTb4b4b4, Te6edf3name_screenTb4b4b4: Tffa657strTb4b4b4, Te6edf3module_nameTb4b4b4: Tffa657strTb4b4b4, Te6edf3path_to_projectTb4b4b4: Tffa657str
Tb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff"Tb4b4b4:
Te6edf3database_model Tff7b72= Te6edf3_database_modelTff7b72.Td2a8ffformatTb4b4b4(
Te6edf3name_screenTff7b72=Te6edf3name_screenTb4b4b4,
Te6edf3module_nameTff7b72=Te6edf3module_nameTb4b4b4,
Te6edf3notify_name_screenTff7b72=Ta5d6fffTa5d6ff'Ta5d6ff"Tffd700{Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3module_nameTff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Ta5d6ff_Ta5d6ff"Tb4b4b4)Tb4b4b4)Tffd700}Ta5d6ff"Ta5d6ff'Tb4b4b4,
Tb4b4b4)
Te6edf3replace_in_fileTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffModelTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffirst_screen.py_tmpTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3database_modelTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3without_database_model Tff7b72= Te6edf3_without_database_modelTff7b72.Td2a8ffformatTb4b4b4(
Te6edf3module_nameTff7b72=Te6edf3module_nameTb4b4b4, Te6edf3name_screenTff7b72=Te6edf3name_screen
Tb4b4b4)
Te6edf3replace_in_fileTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffModelTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffirst_screen.py_tmpTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3without_database_modelTb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffremoveTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffModelTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffdatabase_firebase.pyTa5d6ff"Tb4b4b4)
Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffremoveTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffModelTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffdatabase_restdb.pyTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffrenameTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffModelTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffirst_screen.py_tmpTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffModelTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Tffd700{Te6edf3module_nameTffd700}Ta5d6ff.py_tmpTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)


Tff7b72def Td2a8ffcreate_controllerTb4b4b4(
Te6edf3name_databaseTb4b4b4: Tffa657strTb4b4b4,
Te6edf3use_hotreloadTb4b4b4: Tffa657strTb4b4b4,
Te6edf3name_screenTb4b4b4: Tffa657strTb4b4b4,
Te6edf3module_nameTb4b4b4: Tffa657strTb4b4b4,
Te6edf3path_to_projectTb4b4b4: Tffa657strTb4b4b4,
Tb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff"Tb4b4b4:
Te6edf3database_controller Tff7b72= Te6edf3_database_controller
Tff7b72elseTb4b4b4:
Te6edf3database_controller Tff7b72= Te6edf3_without_database_controller
Te6edf3name_view Tff7b72= Tb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffView.Tffd700{Te6edf3name_screenTffd700}Ta5d6ff.Tffd700{Te6edf3module_nameTffd700}Ta5d6ff.Tffd700{Te6edf3name_screenTffd700}Ta5d6ffViewTa5d6ff"
Tff7b72if Te6edf3use_hotreload Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6fffTa5d6ff"Tffd700{Te6edf3name_screenTffd700}Ta5d6ffViewTa5d6ff"
Tb4b4b4)
Te6edf3database_controller Tff7b72= Te6edf3database_controllerTff7b72.Td2a8ffformatTb4b4b4(
Te6edf3name_screenTff7b72=Te6edf3name_screenTb4b4b4,
Te6edf3module_nameTff7b72=Te6edf3module_nameTb4b4b4,
Te6edf3import_moduleTff7b72=Ta5d6ff"Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffimport importlibTffea00\nTffea00\nTa5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffimport View.Tffd700{Te6edf3name_screenTffd700}Ta5d6ff.Tffd700{Te6edf3module_nameTffd700}Tffea00\nTffea00\nTa5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ff# We have to manually reload the view module in order to apply theTffea00\nTa5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ff# changes made to the code on a subsequent hot reload.Tffea00\nTa5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ff# If you no longer need a hot reload, you can delete this instruction.Tffea00\nTa5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffimportlib.reload(View.Tffd700{Te6edf3name_screenTffd700}Ta5d6ff.Tffd700{Te6edf3module_nameTffd700}Ta5d6ff)Ta5d6ff"
Tff7b72if Te6edf3use_hotreload Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6fffTa5d6ff"Tffea00\nTa5d6fffrom View.Tffd700{Te6edf3name_screenTffd700}Ta5d6ff.Tffd700{Te6edf3module_nameTffd700}Ta5d6ff import Tffd700{Te6edf3name_screenTffd700}Ta5d6ffViewTa5d6ff"Tb4b4b4,
Te6edf3name_viewTff7b72=Te6edf3name_viewTb4b4b4,
Tb4b4b4)
Te6edf3replace_in_fileTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffControllerTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffirst_screen.py_tmpTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3database_controllerTb4b4b4, Te6edf3name_viewTb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffrenameTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffControllerTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffirst_screen.py_tmpTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffControllerTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Tffd700{Te6edf3module_nameTffd700}Ta5d6ff.py_tmpTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)


Tff7b72def Td2a8ffcreate_viewTb4b4b4(
Te6edf3name_databaseTb4b4b4: Tffa657strTb4b4b4,
Te6edf3use_localizationTb4b4b4: Tffa657strTb4b4b4,
Te6edf3name_screenTb4b4b4: Tffa657strTb4b4b4,
Te6edf3module_nameTb4b4b4: Tffa657strTb4b4b4,
Te6edf3path_to_projectTb4b4b4: Tffa657strTb4b4b4,
Tb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3replace_in_fileTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffscreens.py_tmpTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4(
Te6edf3module_nameTb4b4b4,
Ta5d6fffTa5d6ff"Tffd700{Te6edf3name_screenTffd700}Ta5d6ffModelTa5d6ff"Tb4b4b4,
Te6edf3module_nameTb4b4b4,
Ta5d6fffTa5d6ff"Tffd700{Te6edf3name_screenTffd700}Ta5d6ffControllerTa5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff'Ta5d6ff"Tffd700{Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3module_nameTff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Ta5d6ff_Ta5d6ff"Tb4b4b4)Tb4b4b4)Tffd700}Ta5d6ff"Ta5d6ff'Tb4b4b4,
Ta5d6fffTa5d6ff"Tffd700{Te6edf3name_screenTffd700}Ta5d6ffModelTa5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Tffd700{Te6edf3name_screenTffd700}Ta5d6ffControllerTa5d6ff"Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3replace_in_fileTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffFirstScreenTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffirst_screen.kvTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4(
Ta5d6fffTa5d6ff"Tffd700{Te6edf3name_screenTffd700}Ta5d6ffViewTa5d6ff"Tb4b4b4,
Te6edf3name_screenTb4b4b4,
Ta5d6ff"Ta5d6ffapp.switch_lang()Ta5d6ff" Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff" Tff7b72else Ta5d6ff"Ta5d6ffxTa5d6ff"Tb4b4b4,
Ta5d6ff'Ta5d6ffapp.translation._(Ta5d6ff"Ta5d6ffTo log in, enter your personal data:Ta5d6ff"Ta5d6ff)Ta5d6ff'
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff'Ta5d6ff"Ta5d6ffTo log in, enter your personal data:Ta5d6ff"Ta5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffapp.translation._(Ta5d6ff"Ta5d6ffLoginTa5d6ff"Ta5d6ff)Ta5d6ff'
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff'Ta5d6ff"Ta5d6ffLoginTa5d6ff"Ta5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffapp.translation._(Ta5d6ff"Ta5d6ffPasswordTa5d6ff"Ta5d6ff)Ta5d6ff'
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff'Ta5d6ff"Ta5d6ffPasswordTa5d6ff"Ta5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffapp.translation._(Ta5d6ff"Ta5d6ffLOGINTa5d6ff"Ta5d6ff)Ta5d6ff'
Tff7b72if Te6edf3use_localization Tff7b72== Ta5d6ff"Ta5d6ffyesTa5d6ff"
Tff7b72else Ta5d6ff'Ta5d6ff"Ta5d6ffLOGINTa5d6ff"Ta5d6ff'Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3replace_in_fileTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(
Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffFirstScreenTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffirst_screen.py_tmpTa5d6ff"
Tb4b4b4)Tb4b4b4,
Tb4b4b4(
Te6edf3_database_view_import
Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff"
Tff7b72else Te6edf3_without_database_view_importTb4b4b4,
Ta5d6fffTa5d6ff"Tffd700{Te6edf3name_screenTffd700}Ta5d6ffViewTa5d6ff"Tb4b4b4,
Te6edf3_database_view_methods Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff" Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3_database_view_model_is_changed_method
Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff"
Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3replace_in_fileTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffbase_screen.py_tmpTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4(
Te6edf3module_nameTb4b4b4,
Ta5d6fffTa5d6ff"Tffd700{Te6edf3name_screenTffd700}Ta5d6ffModelTa5d6ff"Tb4b4b4,
Te6edf3module_nameTb4b4b4,
Ta5d6fffTa5d6ff"Tffd700{Te6edf3name_screenTffd700}Ta5d6ffControllerTa5d6ff"Tb4b4b4,
Te6edf3module_nameTb4b4b4,
Ta5d6fffTa5d6ff"Tffd700{Te6edf3name_screenTffd700}Ta5d6ffModelTa5d6ff"Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffrenameTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffbase_screen.py_tmpTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffbase_screen.pyTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffrenameTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffFirstScreenTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffirst_screen.kvTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(
Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffFirstScreenTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Tffd700{Te6edf3module_nameTffd700}Ta5d6ff.kvTa5d6ff"
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffrenameTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(
Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffFirstScreenTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffirst_screen.py_tmpTa5d6ff"
Tb4b4b4)Tb4b4b4,
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(
Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffFirstScreenTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Tffd700{Te6edf3module_nameTffd700}Ta5d6ff.py_tmpTa5d6ff"
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffrenameTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffFirstScreenTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Te6edf3name_screenTb4b4b4)Tb4b4b4,
Tb4b4b4)


Tff7b72def Td2a8ffcreate_requirementsTb4b4b4(Te6edf3name_databaseTb4b4b4: Tffa657strTb4b4b4, Te6edf3path_to_projectTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Tff7b72with Tffa657openTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffrequirements.txtTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"
Tb4b4b4) Tff7b72as Te6edf3requirementsTb4b4b4:
Te6edf3requirementsTff7b72.Td2a8ffwriteTb4b4b4(
Te6edf3_firebase_requirements
Tff7b72if Te6edf3name_database Tff7b72!= Ta5d6ff"Ta5d6ffnoTa5d6ff"
Tff7b72else Te6edf3_without_firebase_requirements
Tb4b4b4)


Tff7b72def Td2a8ffcreate_makefileTb4b4b4(
Te6edf3path_to_projectTb4b4b4: Tffa657strTb4b4b4, Te6edf3project_nameTb4b4b4: Tffa657strTb4b4b4, Te6edf3module_nameTb4b4b4: Tffa657strTb4b4b4, Te6edf3name_screenTb4b4b4: Tffa657str
Tb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3path_to_makefile_tmp Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffMakefile.tmpTa5d6ff"Tb4b4b4)
Te6edf3replace_in_fileTb4b4b4(
Te6edf3path_to_makefile_tmpTb4b4b4,
Tb4b4b4(
Te6edf3name_screenTb4b4b4,
Te6edf3module_nameTb4b4b4,
Te6edf3name_screenTb4b4b4,
Te6edf3module_nameTb4b4b4,
Te6edf3project_nameTb4b4b4,
Te6edf3project_nameTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffrenameTb4b4b4(Te6edf3path_to_makefile_tmpTb4b4b4, Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffsplitextTb4b4b4(Te6edf3path_to_makefile_tmpTb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffchdirTb4b4b4(Te6edf3path_to_projectTb4b4b4)
Te6edf3osTff7b72.Td2a8ffsystemTb4b4b4(Ta5d6ff"Ta5d6ffmake poTa5d6ff"Tb4b4b4)


Tff7b72def Td2a8ffcreate_mofileTb4b4b4(Te6edf3path_to_projectTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3osTff7b72.Td2a8ffchdirTb4b4b4(Te6edf3path_to_projectTb4b4b4)
Te6edf3osTff7b72.Td2a8ffsystemTb4b4b4(Ta5d6ff"Ta5d6ffmake moTa5d6ff"Tb4b4b4)


Tff7b72def Td2a8ffcreate_virtual_environmentTb4b4b4(
Te6edf3python_versionTb4b4b4: Tffa657strTb4b4b4, Te6edf3path_to_projectTb4b4b4: Tffa657str
Tb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3osTff7b72.Td2a8ffsystemTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3python_versionTffd700}Ta5d6ff -m pip install virtualenvTa5d6ff"Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffsystemTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffvirtualenv -p Tffd700{Te6edf3python_versionTffd700}Ta5d6ff Tffd700{Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff'Ta5d6ffvenvTa5d6ff'Tb4b4b4)Tffd700}Ta5d6ff"
Tb4b4b4)


Tff7b72def Td2a8fflocalization_po_fileTb4b4b4(Te6edf3path_to_projectTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3path_to_file_po Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(
Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffdataTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fflocalesTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffpoTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffru.poTa5d6ff"
Tb4b4b4)
Tff7b72with Tffa657openTb4b4b4(Te6edf3path_to_file_poTb4b4b4, Ta5d6ff"Ta5d6ffrtTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4) Tff7b72as Te6edf3file_poTb4b4b4:
Te6edf3file_po_content Tff7b72= Tb4b4b4(
Te6edf3file_poTff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4)
Tff7b72.Td2a8ffreplaceTb4b4b4(
Ta5d6ff'Ta5d6ffmsgid Ta5d6ff"Ta5d6ffTo log in, enter your personal data:Ta5d6ff"Tffea00\nTa5d6ffmsgstr Ta5d6ff"Ta5d6ff"Ta5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffmsgid Ta5d6ff"Ta5d6ffTo log in, enter your personal data:Ta5d6ff"Tffea00\nTa5d6ffmsgstr Ta5d6ff"Ta5d6ffДля входа введите свои личные данныеTa5d6ff"Ta5d6ff'Tb4b4b4,
Tb4b4b4)
Tff7b72.Td2a8ffreplaceTb4b4b4(
Ta5d6ff'Ta5d6ffmsgid Ta5d6ff"Ta5d6ffLoginTa5d6ff"Tffea00\nTa5d6ffmsgstr Ta5d6ff"Ta5d6ff"Ta5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffmsgid Ta5d6ff"Ta5d6ffLoginTa5d6ff"Tffea00\nTa5d6ffmsgstr Ta5d6ff"Ta5d6ffЛогинTa5d6ff"Ta5d6ff'
Tb4b4b4)
Tff7b72.Td2a8ffreplaceTb4b4b4(
Ta5d6ff'Ta5d6ffmsgid Ta5d6ff"Ta5d6ffPasswordTa5d6ff"Tffea00\nTa5d6ffmsgstr Ta5d6ff"Ta5d6ff"Ta5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffmsgid Ta5d6ff"Ta5d6ffPasswordTa5d6ff"Tffea00\nTa5d6ffmsgstr Ta5d6ff"Ta5d6ffПарольTa5d6ff"Ta5d6ff'Tb4b4b4,
Tb4b4b4)
Tff7b72.Td2a8ffreplaceTb4b4b4(
Ta5d6ff'Ta5d6ffmsgid Ta5d6ff"Ta5d6ffLOGINTa5d6ff"Tffea00\nTa5d6ffmsgstr Ta5d6ff"Ta5d6ff"Ta5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffmsgid Ta5d6ff"Ta5d6ffLOGINTa5d6ff"Tffea00\nTa5d6ffmsgstr Ta5d6ff"Ta5d6ffЛОГИНTa5d6ff"Ta5d6ff'
Tb4b4b4)
Tb4b4b4)
Tff7b72with Tffa657openTb4b4b4(Te6edf3path_to_file_poTb4b4b4, Ta5d6ff"Ta5d6ffwtTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4) Tff7b72as Te6edf3file_poTb4b4b4:
Te6edf3file_poTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3file_po_contentTb4b4b4)


Tff7b72def Td2a8ffinstall_requirementsTb4b4b4(
Te6edf3path_to_projectTb4b4b4: Tffa657strTb4b4b4, Te6edf3kivy_versionTb4b4b4: Tffa657strTb4b4b4, Te6edf3name_databaseTb4b4b4: Tffa657str
Tb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3python Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffvenvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffbinTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffpython3Ta5d6ff"Tb4b4b4)
Tff7b72if Te6edf3kivy_version Tff7b72== Ta5d6ff"Ta5d6ffmasterTa5d6ff"Tb4b4b4:
Tff7b72if Te6edf3platform Tff7b72== Ta5d6ff"Ta5d6ffmacosxTa5d6ff"Tb4b4b4:
Te6edf3osTff7b72.Td2a8ffsystemTb4b4b4(
Ta5d6fffTa5d6ff"Tffd700{Te6edf3pythonTffd700}Ta5d6ff -m pip install Ta5d6ff'Ta5d6ffkivy[base] @ https://github.com/kivy/kivy/archive/master.zipTa5d6ff'Ta5d6ff"
Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3osTff7b72.Td2a8ffsystemTb4b4b4(
Ta5d6fffTa5d6ff"Tffd700{Te6edf3pythonTffd700}Ta5d6ff -m pip install https://github.com/kivy/kivy/archive/master.zipTa5d6ff"
Tb4b4b4)
Tff7b72elif Te6edf3kivy_version Tff7b72== Ta5d6ff"Ta5d6ffstableTa5d6ff"Tb4b4b4:
Te6edf3osTff7b72.Td2a8ffsystemTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3pythonTffd700}Ta5d6ff -m pip install kivyTa5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3osTff7b72.Td2a8ffsystemTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3pythonTffd700}Ta5d6ff -m pip install kivy==Tffd700{Te6edf3kivy_versionTffd700}Ta5d6ff"Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffsystemTb4b4b4(
Ta5d6fffTa5d6ff"Tffd700{Te6edf3pythonTffd700}Ta5d6ff -m pip install https://github.com/kivymd/KivyMD/archive/master.zipTa5d6ff"
Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffsystemTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3pythonTffd700}Ta5d6ff -m pip install watchdogTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3name_database Tff7b72== Ta5d6ff"Ta5d6fffirebaseTa5d6ff"Tb4b4b4:
Te6edf3osTff7b72.Td2a8ffsystemTb4b4b4(
Ta5d6fffTa5d6ff"Tffd700{Te6edf3pythonTffd700}Ta5d6ff -m pip install Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffmultitasking Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6fffirebase Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6fffirebase-admin Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffpython_jwt Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffgcloud Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffsseclient Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffpycryptodome==3.4.3 Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffrequests_toolbelt Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffwatchdog Ta5d6ff"
Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffsystemTb4b4b4(
Ta5d6fffTa5d6ff"Tffd700{Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff'Ta5d6ffvenvTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffbinTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffpython3Ta5d6ff'Tb4b4b4)Tffd700}Ta5d6ff -m pip listTa5d6ff"
Tb4b4b4)


Tff7b72def Td2a8ffrename_ext_py_tmp_to_pyTb4b4b4(Te6edf3path_to_projectTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Tff7b72for Te6edf3path_to_dirTb4b4b4, Te6edf3dirsTb4b4b4, Te6edf3files Tff7b72in Te6edf3osTff7b72.Td2a8ffwalkTb4b4b4(Te6edf3path_to_projectTb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3name_file Tff7b72in Te6edf3filesTb4b4b4:
Tff7b72if Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffsplitextTb4b4b4(Te6edf3name_fileTb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ff.py_tmpTa5d6ff"Tb4b4b4:
Te6edf3osTff7b72.Td2a8ffrenameTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_dirTb4b4b4, Te6edf3name_fileTb4b4b4)Tb4b4b4,
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(
Te6edf3path_to_dirTb4b4b4, Ta5d6fffTa5d6ff"Tffd700{Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffsplitextTb4b4b4(Te6edf3name_fileTb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tffd700}Ta5d6ff.pyTa5d6ff"
Tb4b4b4)Tb4b4b4,
Tb4b4b4)


Tff7b72def Td2a8ffmove_initTb4b4b4(Te6edf3path_to_projectTb4b4b4: Tffa657strTb4b4b4, Te6edf3name_screenTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3path_to_init_file Tff7b72= Tff7b72__file__Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ffcreate_projectTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff__init__Ta5d6ff"Tb4b4b4)
Tff7b72for Te6edf3name_dir Tff7b72in Tb4b4b4(Ta5d6ff"Ta5d6ffControllerTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffModelTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffUtilityTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3shutilTff7b72.Td2a8ffcopyTb4b4b4(
Te6edf3path_to_init_fileTb4b4b4,
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Te6edf3name_dirTb4b4b4, Ta5d6ff"Ta5d6ff__init__.pyTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3shutilTff7b72.Td2a8ffcopyTb4b4b4(
Te6edf3path_to_init_fileTb4b4b4,
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Te6edf3name_screenTb4b4b4, Ta5d6ff"Ta5d6ff__init__.pyTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3path_to_components Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(
Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffViewTa5d6ff"Tb4b4b4, Te6edf3name_screenTb4b4b4, Ta5d6ff"Ta5d6ffcomponentsTa5d6ff"
Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffmkdirTb4b4b4(Te6edf3path_to_componentsTb4b4b4)
Te6edf3shutilTff7b72.Td2a8ffcopyTb4b4b4(
Te6edf3path_to_init_fileTb4b4b4, Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_componentsTb4b4b4, Ta5d6ff"Ta5d6ff__init__.pyTa5d6ff"Tb4b4b4)
Tb4b4b4)


Tff7b72def Td2a8ffcheck_databasesTb4b4b4(Te6edf3name_databaseTb4b4b4: Tffa657strTb4b4b4, Te6edf3path_to_projectTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3databases Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6fffirebaseTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffrestdbTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffrestdbTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fffirebaseTa5d6ff"Tb4b4b4}
Te6edf3osTff7b72.Td2a8ffremoveTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(
Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffModelTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Ta5d6ffdatabase_Tffd700{Te6edf3databasesTb4b4b4[Te6edf3name_databaseTb4b4b4]Tffd700}Ta5d6ff.pyTa5d6ff"
Tb4b4b4)
Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffrenameTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffModelTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Ta5d6ffdatabase_Tffd700{Te6edf3name_databaseTffd700}Ta5d6ff.pyTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_projectTb4b4b4, Ta5d6ff"Ta5d6ffModelTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffdatabase.pyTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)


Tff7b72def Td2a8ffchek_camel_case_name_projectTb4b4b4(Te6edf3name_projectTb4b4b4) Tff7b72-Tff7b72> Te6edf3UnionTb4b4b4[Tffa657boolTb4b4b4, Tffa657listTb4b4b4]Tb4b4b4:
Te6edf3result Tff7b72= Te6edf3reTff7b72.Td2a8fffindallTb4b4b4(Ta5d6ff"Ta5d6ff[A-Z][a-z]*Ta5d6ff"Tb4b4b4, Te6edf3name_projectTb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3resultTb4b4b4) Tff7b72== T79c0ff1Tb4b4b4:
Tff7b72return Tff7b72False
Tff7b72return Te6edf3result


Tff7b72def Td2a8ffreplace_in_fileTb4b4b4(Te6edf3path_to_fileTb4b4b4: Tffa657strTb4b4b4, Te6edf3argsTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Tff7b72with Tffa657openTb4b4b4(Te6edf3path_to_fileTb4b4b4, Ta5d6ff"Ta5d6ffrtTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4) Tff7b72as Te6edf3file_contentTb4b4b4:
Te6edf3new_file_content Tff7b72= Te6edf3file_contentTff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4) Tff7b72% Tb4b4b4(Te6edf3argsTb4b4b4)
Tff7b72with Tffa657openTb4b4b4(Te6edf3path_to_fileTb4b4b4, Ta5d6ff"Ta5d6ffwtTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4) Tff7b72as Te6edf3original_fileTb4b4b4:
Te6edf3original_fileTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3new_file_contentTb4b4b4)


Tff7b72def Td2a8ffcreate_argument_parserTb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Te6edf3ArgumentParserWithHelpTb4b4b4:
Te6edf3parser Tff7b72= Te6edf3ArgumentParserWithHelpTb4b4b4(
Te6edf3progTff7b72=Ta5d6ff"Ta5d6ffcreate_project.pyTa5d6ff"Tb4b4b4,
Te6edf3allow_abbrevTff7b72=Tff7b72FalseTb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ffpatternTa5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffthe name of the pattern with which the project will be created.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ffdirectoryTa5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffdirectory in which the project will be created.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffproject name.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ffpython_versionTa5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffthe version of Python (specify as `python3.9` or `python3.8`) Ta5d6ff"
Ta5d6ff"Ta5d6ffwith which the virtual environment will be created.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ffkivy_versionTa5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffversion of Kivy (specify as `2.1.0` or `master`) that will be Ta5d6ff"
Ta5d6ff"Ta5d6ffused in the project.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ff--name_screenTa5d6ff"Tb4b4b4,
Te6edf3defaultTff7b72=Ta5d6ff"Ta5d6ffMainScreenTa5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffthe name of the class wich be used when creating the project pattern.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ff--name_databaseTa5d6ff"Tb4b4b4,
Te6edf3defaultTff7b72=Ta5d6ff"Ta5d6ffnoTa5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffname of the database provider (Ta5d6ff'Ta5d6fffirebaseTa5d6ff'Ta5d6ff or Ta5d6ff'Ta5d6ffrestdbTa5d6ff'Ta5d6ff).Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ff--use_hotreloadTa5d6ff"Tb4b4b4,
Te6edf3defaultTff7b72=Ta5d6ff"Ta5d6ffnoTa5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffcreates a hot reload entry point to the application.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ff--use_localizationTa5d6ff"Tb4b4b4,
Te6edf3defaultTff7b72=Ta5d6ff"Ta5d6ffnoTa5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffcreates application localization files.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72return Te6edf3parser


Tff7b72if Tff7b72__name__ Tff7b72== Ta5d6ff"Ta5d6ff__main__Ta5d6ff"Tb4b4b4:
Te6edf3mainTb4b4b4(Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────